<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Source</name>
    </assembly>
    <members>
        <member name="T:IDomainContextAccessor`1">
            <summary>
            Interface implemented by entities that need to 
            access the owning domain context to implement 
            their business logic.
            </summary>
            <remarks>
            Some aggregate roots may need to create, find or save 
            other aggregate roots in the context, and in order to do 
            it, they can implement this interface. Domain 
            context implementations should check for this interface 
            when the entities are being materialized or 
            constructed via <see cref="M:IDomainContext`1.New``1(System.Action{``0})"/> 
            or <see cref="M:IDomainContext`1.Find``1(`0)"/> 
            to set the property value.
            </remarks>
            <nuget id="netfx-Patterns.DomainContext"/>
        </member>
        <member name="P:IDomainContextAccessor`1.Context">
            <summary>
            Gets or sets the owning domain context.
            </summary>
        </member>
        <member name="T:IAggregateRoot`1">
            <summary>
            Base interface that must be implemented by all aggregate root entities. 
            </summary>
            <remarks>
            This interface simply provides the <see cref="P:IAggregateRoot`1.IsDeleted"/> on top of 
            what <see cref="T:IIdentifiable`1"/> provides, enforcing the rule that that 
            aggregate are never deleted using the domain model, they are 
            simply marked as deleted.
            <para>
            Accessing the underlying context implementation though, aggregate 
            roots can be deleted anyway as usual in EF/NH (i.e. in migration scenarios, 
            tests, etc., it might be needed).
            </para>
            </remarks>
            <nuget id="netfx-Patterns.DomainContext"/>
        </member>
        <member name="T:IIdentifiable`1">
            <summary>
            Base interface that must be implented by all domain entities. 
            Types that do not have their separate table (a.k.a. "complex types" 
            in EF or "components" in NH) just don't implement this interface.
            </summary>
            <nuget id="netfx-Patterns.DomainContext" />
        </member>
        <member name="P:IIdentifiable`1.Id">
            <summary>
            Gets or sets the id.
            </summary>
        </member>
        <member name="P:IAggregateRoot`1.IsDeleted">
            <summary>
            Gets or sets a value indicating whether the entity is deleted. 
            Aggregate root entities are never deleted using the domain model, they are 
            simply marked as deleted.
            </summary>
        </member>
        <member name="T:IDomainContext`1">
            <summary>
            Provides access to the domain aggregate roots.
            </summary>
            <nuget id="netfx-Patterns.DomainContext" />
        </member>
        <member name="M:IDomainContext`1.Commit">
            <summary>
            Saves all changes made in this context to the underlying database.
            </summary>
        </member>
        <member name="M:IDomainContext`1.Find``1(`0)">
            <summary>
            Finds the aggregate root with the specified id.
            </summary>
            <returns>The found aggregate or <see langword="null"/>.</returns>
        </member>
        <member name="M:IDomainContext`1.Persist``1(``0)">
            <summary>
            Inserts or updates the specified aggregate root.
            </summary>
        </member>
        <member name="M:IDomainContext`1.New``1(System.Action{``0})">
            <summary>
            Creates a new instance of an aggregate root.
            </summary>
            <remarks>
            Although not strictly required, using this method for creating new 
            aggregate roots allows the context to perform additional initialization 
            if needed, such as injecting the <see cref="T:IDomainContext`1"/> into an 
            entity that implements <see cref="T:IDomainContextAccessor`1"/>, tracking 
            the entity changes, create a proxy for it, etc.
            </remarks>
            <typeparam name="T">Type of aggregate root to instantiate.</typeparam>
        </member>
        <member name="M:IDomainContext`1.Delete``1(`0)">
            <summary>
            Logically deletes the specified aggregate root.
            </summary>
        </member>
        <member name="M:IDomainContext`1.Delete``1(``0)">
            <summary>
            Logically deletes the aggregate root with the specified identifier.
            </summary>
        </member>
        <member name="T:QueryableExtensions">
            <summary>
            Allows consumers of <see cref="T:IDomainContext`1"/> queryable 
            aggregate roots to include/prefetch certain properties or 
            property paths. This class allows testing of such extension 
            method by exposing a replaceable <see cref="T:QueryableExtensions.IIncluder"/> 
            interface that concrete domain context implementations 
            replace on their constructors.
            </summary>
        </member>
        <member name="M:QueryableExtensions.Include``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}})">
            <summary>
            Specifies that the given property should be included/prefetched for a queryable from an <see cref="T:IDomainContext`1"/>.
            </summary>
            <typeparam name="T">Type of queryable entity, inferred by the compiler from the <paramref name="source"/> argument.</typeparam>
            <typeparam name="TProperty">The type of the property, inferred by the compiler from the <paramref name="path"/> expression.</typeparam>
            <param name="source">The queryable source to include/prefetch properties from.</param>
            <param name="path">The property path expression.</param>
        </member>
        <member name="M:QueryableExtensions.Include``1(System.Linq.IQueryable{``0},System.String)">
            <summary>
            Specifies that the given property should be included/prefetched for a queryable from an <see cref="T:IDomainContext`1"/>.
            </summary>
            <typeparam name="T">Type of queryable entity, inferred by the compiler from the <paramref name="source"/> argument.</typeparam>
            <param name="source">The queryable source to include/prefetch properties from.</param>
            <param name="path">The property path expression.</param>
        </member>
        <member name="T:QueryableExtensions.IIncluder">
            <summary>
            Provides the <c>Include</c> extension method for queryables. Does 
            nothing by default.
            </summary>
        </member>
        <member name="M:QueryableExtensions.IIncluder.Include``2(System.Linq.IQueryable{``0},System.Linq.Expressions.Expression{System.Func{``0,``1}})">
            <summary>
            Specifies that the given property should be included/prefetched.
            </summary>
            <typeparam name="T">Type of queryable entity, inferred by the compiler from the <paramref name="source"/> argument.</typeparam>
            <typeparam name="TProperty">The type of the property, inferred by the compiler from the <paramref name="path"/> expression.</typeparam>
            <param name="source">The queryable source to include/prefetch properties from.</param>
            <param name="path">The property path expression.</param>
        </member>
        <member name="M:QueryableExtensions.IIncluder.Include``1(System.Linq.IQueryable{``0},System.String)">
            <summary>
            Specifies that the given property should be included/prefetched.
            </summary>
            <typeparam name="T">Type of queryable entity, inferred by the compiler from the <paramref name="source"/> argument.</typeparam>
            <param name="source">The queryable source to include/prefetch properties from.</param>
            <param name="path">The property path expression.</param>
        </member>
    </members>
</doc>
